<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:nyext="urn:noury-extensions">
  <xsl:output method="text" encoding="UTF-8"/>

  <xsl:param name="package" />
  <xsl:param name="outdir" />
  <xsl:param name="name" />
  <xsl:param name="domainName" />
  <xsl:variable name="domain" select="/manifest/types/domain[@name=$domainName]" />

  <xsl:include href="functions.xslt" />

  <xsl:template name="generate-model-file">
  <xsl:variable name="src">
  <xsl:text>// $Id: </xsl:text>
  <xsl:value-of select="$domainName"/>
  <xsl:text>InfoQuestionFactory.cs 

using System;
using System.Collections.Generic;
using System.Text;
using Salamanca.DataActivities.UI;
using Salamanca.DataActivities;

namespace </xsl:text>
          <xsl:value-of select="$package"/>
          <xsl:text>
{



    abstract partial class </xsl:text>
    <xsl:value-of select="$domainName"/>
    <xsl:text>CrudQuestionFactory
    {
        /// &lt;summary&gt;Renseignement des données d'un objet.&lt;/summary&gt;
        /// &lt;param name="controller"&gt;Gère le déroulement de l'activité.&lt;/param&gt;
        /// &lt;param name="</xsl:text>
        <xsl:value-of select="nyext:toLower($domainName)"/>
        <xsl:text>"&gt;Données de l'objet.&lt;/param&gt;
        /// &lt;returns&gt;Appel d'une page de l'application avec les données de l'objet.&lt;/returns&gt;
        public abstract Question Ask</xsl:text>
        <xsl:value-of select="$domainName"/>
        <xsl:text>Infos(ActivityController controller, DomainModel.</xsl:text>
        <xsl:value-of select="$domainName"/>
        <xsl:text> </xsl:text>
        <xsl:value-of select="nyext:toLower($domainName)"/>
        <xsl:text>);
        /// &lt;summary&gt;Sélection du lieu de service de l'objet.&lt;/summary&gt;
        /// &lt;param name="controller"&gt;Gère le déroulement de l'activité.&lt;/param&gt;
        /// &lt;param name="</xsl:text>
        <xsl:value-of select="nyext:toLower($domainName)"/>
        <xsl:text>"&gt;Données de l'objet.&lt;/param&gt;
        /// &lt;returns&gt;Appel d'une page de l'application avec les données de l'objet.&lt;/returns&gt;
        public abstract Question Show</xsl:text>
        <xsl:value-of select="$domainName"/>
        <xsl:text>Infos(ActivityController controller, DomainModel.</xsl:text>
        <xsl:value-of select="$domainName"/>
        <xsl:text> </xsl:text>
        <xsl:value-of select="nyext:toLower($domainName)"/>
        <xsl:text>);
    }
}
    </xsl:text>
  </xsl:variable>
  <xsl:value-of select="nyext:generateFile($src, nyext:combinePath($outdir, concat(nyext:getModelFileName($name), '.cs')))" />
</xsl:template>

  <xsl:template name="generate-user-file">
    <xsl:text>// $Id: </xsl:text>
    <xsl:value-of select="$domainName"/>
    <xsl:text>InfoQuestionFactory.cs 

using System;
using System.Collections.Generic;
using System.Text;
using Salamanca.DataActivities.UI;
using Salamanca.DataActivities;

namespace </xsl:text>
    <xsl:value-of select="$package"/>
    <xsl:text>
{



    ///////////////////////////////////////////////////////////////////////////
    ///
    /// &lt;summary&gt;Contient l'ensemble des questions permettant d'effectuer des opérations sur un objet.&lt;/summary&gt;
    /// &lt;remarks&gt;Ces questions sont à implémenter dans l'application.&lt;/remarks&gt;
    ///
    ///////////////////////////////////////////////////////////////////////////

    public abstract partial class </xsl:text>
    <xsl:value-of select="$domainName"/>
    <xsl:text>CrudQuestionFactory
    {

    }
}
    </xsl:text>
  </xsl:template>

<xsl:template match="/">
  <xsl:call-template name="generate-model-file" />
  <xsl:call-template name="generate-user-file" />
</xsl:template>
</xsl:stylesheet>
